home *** CD-ROM | disk | FTP | other *** search
- UNIT info; {$project vt }
- { Generierung von Sonderseiten zum Programm VideoText }
-
- INTERFACE; FROM vt USES jobs;
-
- PROCEDURE topinfo(top0,top1: p_onepage);
- PROCEDURE say_hello(version: Str80);
- PROCEDURE paraminfo;
- PROCEDURE create_help;
-
- { ---------------------------------------------------------------------- }
-
- IMPLEMENTATION;
-
- {$opt q,s+,i+ } { keine Laufzeitprüfungen außer Stack und Feldindizes }
-
- PROCEDURE write_to_page(x,y: Integer; txt: Str80; vgf,hgf: Integer;
- seite: p_onepage);
- { Text in eine Videotextseite schreiben. }
- { x und y werden ab 0 gezählt. Umlaute werden konvertiert. Wenn vgf oder }
- { hgf -1 sind, werden keine Farbsteuerzeichen erzeugt -> Platzersparnis. }
- VAR i,j: Integer;
- BEGIN
- i := x + 40*y;
- IF hgf=0 THEN BEGIN
- seite^.chars[i] := 28; Inc(i);
- END;
- IF hgf>0 THEN BEGIN
- seite^.chars[i] := hgf; Inc(i);
- seite^.chars[i] := 29; Inc(i);
- END;
- IF vgf>=0 THEN BEGIN
- seite^.chars[i] := vgf; Inc(i);
- END;
- FOR j := 1 TO Length(txt) DO BEGIN
- CASE txt[j] OF
- 'ä': seite^.chars[i] := Ord('{');
- 'ö': seite^.chars[i] := Ord('|');
- 'ü': seite^.chars[i] := Ord('}');
- 'ß': seite^.chars[i] := Ord('~');
- 'Ä': seite^.chars[i] := Ord('[');
- 'Ö': seite^.chars[i] := Ord('\');
- 'Ü': seite^.chars[i] := Ord(']');
- OTHERWISE seite^.chars[i] := Ord(txt[j]);
- END;
- Inc(i);
- END;
- END;
-
- PROCEDURE char_to_page(x,y: Integer; c: Char; seite: p_onepage);
- BEGIN
- seite^.chars[x+40*y] := Ord(c);
- END;
-
- PROCEDURE init_page(seite: p_onepage);
- { gerade mit New() erzeugte Seite zum Selbstbeschreiben vorbereiten. }
- { Nur pg und sp müssen bereits eingetragen sein. }
- VAR i: Integer;
- s: Str80;
- BEGIN
- FOR i := 0 TO 959 DO seite^.chars[i] := 32;
- seite^.cbits := $4A00; { wichtig: deutscher Zeichensatz! }
- s := '('+hexstr(seite^.sp,4)+') '+hexstr(seite^.pg,3);
- write_to_page(0,0,s,7,-1,seite);
- write_to_page(16,0,'lokal erzeugte VT-Seite',5,-1,seite);
- END;
-
- PROCEDURE topinfo{(top0,top1: p_onepage)};
- { wertet die TOPtext-Seiten 1F0 und 1F1 aus, erzeugt zwei Seiten Information }
- { bzw., sofern schon vorhanden, aktualisiert diese nur. }
- VAR i,j,k,n: Integer;
- npg,nsp,nlrg: Integer;
- pg1,pg2: p_onepage;
- s: Str80;
- BEGIN
- pg1 := hunt_in_list($998,1,True);
- pg2 := hunt_in_list($998,2,True);
- IF pg1=Nil THEN BEGIN
- New(pg1); pg1^.pg := $998; pg1^.sp := 1;
- ins_to_list(pg1); update_list(pg1,1);
- END;
- IF pg2=Nil THEN BEGIN
- New(pg2); pg2^.pg := $998; pg2^.sp := 2;
- ins_to_list(pg2); update_list(pg2,1);
- END;
- init_page(pg1);
- init_page(pg2);
- npg := 0; nsp := 0; nlrg := 0;
- write_to_page(0,1,'Seitenbelegung (laut TOP-Text) 1/2',3,4,pg1);
- write_to_page(0,1,'Seitenbelegung (laut TOP-Text) 2/2',3,4,pg2);
- FOR i := 10 TO 89 DO BEGIN
- s := IntStr(10*i)+': ----------';
- j := 10*i-60;
- FOR k := 0 TO 9 DO
- IF NOT (topcode[top0^.chars[j+k]] IN [0,16]) THEN BEGIN
- Inc(npg); n := topcode[top1^.chars[j+k]]
- CASE n OF
- 0: BEGIN s[k+6] := #127; Inc(nsp); END;
- 1..9: BEGIN s[k+6] := Chr(48+n); nsp := nsp + n; END;
- 10: BEGIN s[k+6] := '+'; Inc(nlrg); nsp := nsp + n; END;
- OTHERWISE s[k+6] := '?'; Dec(npg); { :-( }
- END;
- END ELSE IF topcode[top0^.chars[j+k]]=16 THEN
- s[k+6] := '?';
- IF Odd(i DIV 10) THEN j := 2 ELSE j := 21;
- IF Odd((i+10) DIV 20) THEN k := i MOD 10+2 ELSE k := i MOD 10+13;
- IF i<50 THEN BEGIN
- write_to_page(j,k,s,7,-1,pg1); char_to_page(j+5,k,#6,pg1);
- END ELSE BEGIN
- write_to_page(j,k,s,7,-1,pg2); char_to_page(j+5,k,#6,pg2);
- END;
- END;
- s := IntStr(npg)+' Seitennummern';
- write_to_page(0,12,s,7,5,pg1);
- s := ''; IF nlrg>0 THEN
- s := IntStr(nlrg)+' mit "mehr als 9" Unterseiten';
- write_to_page(0,23,s,3,1,pg1);
- s := IntStr(nsp)+' kByte Text';
- IF nlrg>0 THEN s := 'mind. ' + s;
- write_to_page(0,12,s,7,5,pg2);
- j := 0;
- FOR i := 100 TO 899 DO
- IF topcode[top0^.chars[i-60]]=1 THEN j := i;
- s := 'zur Zeit keine Untertitel';
- IF j>0 THEN s := 'VT-Untertitel auf Seite '+IntStr(j);
- write_to_page(0,23,s,3,1,pg2);
- IF (thispage=pg1) OR (thispage=pg2) THEN
- writepage(thispage,True);
- END;
-
- PROCEDURE say_hello{(version: Str80)};
- VAR seite: p_onepage;
- i: Integer;
- BEGIN
- seite := hunt_in_list($996,0,True);
- IF seite=Nil THEN BEGIN
- New(seite); seite^.pg := $996; seite^.sp := 0;
- ins_to_list(seite); { kein update_list(), da redraw_all noch folgt }
- END;
- init_page(seite);
- i := 1;
- write_to_page(0,i,#13,3,4,seite);
- write_to_page(13,i,Copy(version,7,14),-1,-1,seite); Inc(i);
- Inc(i);
- write_to_page(0,i,' Teletext-Software für den Amiga',4,6,seite); Inc(i);
- Inc(i);
- write_to_page(0,i,' Programmautor (1992-95):',7,5,seite); Inc(i);
- write_to_page(0,i,' Wilhelm Nöker',6,-1,seite); Inc(i);
- write_to_page(0,i,' Hertastr. 8, D-44388 Dortmund',6,-1,seite); Inc(i);
- Inc(i);
- write_to_page(0,i,' Compiler:',7,5,seite); Inc(i);
- write_to_page(0,i,' KICK-Pascal 2.12 von MAXON Computer',6,-1,seite); Inc(i);
- Inc(i);
- write_to_page(0,i, ' benötigte Hardware:',7,5,seite); Inc(i);
- write_to_page(0,i,' entspricht dem c''t-Projekt aus der',6,-1,seite); Inc(i);
- write_to_page(0,i,' Ausgabe 7/92',6,-1,seite); Inc(i);
- Inc(i);
- write_to_page(0,i,#13' FREEWARE',3,4,seite); Inc(i);
- Inc(i);
- write_to_page(0,i,' "Spread the word & the disk!"',4,6,seite); Inc(i);
- Inc(i);
- write_to_page(0,i,#24' Grüße an MiHü ;-)',5,-1,seite); Inc(i);
- END;
-
- PROCEDURE paraminfo;
- { gibt die eingestellten Startparameter aus }
- VAR seite: p_onepage;
- i,j: Integer;
- s: Str80;
- BEGIN
- seite := hunt_in_list($997,0,True);
- IF seite=Nil THEN BEGIN
- New(seite); seite^.pg := $997; seite^.sp := 0;
- ins_to_list(seite); { kein update_list(), da redraw_all noch folgt }
- END;
- init_page(seite);
- i := 1;
- write_to_page(0,i,#13' Ihre Programmstartparameter'#12,3,4,seite); Inc(i);
- Inc(i);
- write_to_page(0,i,'bzw. was Sie hätten angeben können',4,6,seite); Inc(i);
- Inc(i);
- write_to_page(0,i,' Icon-ToolTypes',6,-1,seite);
- write_to_page(25,i,'CLI-Parameter',5,-1,seite); Inc(i)
- write_to_page(0,i,'max. Zeit für Seitensuche (sek):',7,5,seite); Inc(i);
- write_to_page(0,i,' MAXWAIT='+IntStr(maxwait),6,-1,seite);
- write_to_page(25,i,'-w'+IntStr(maxwait),5,-1,seite); Inc(i);
- write_to_page(0,i,'Auffüllen einer Seite (50stel sek):',7,5,seite); Inc(i);
- write_to_page(0,i,' BURST='+IntStr(burst),6,-1,seite);
- write_to_page(25,i,'-b'+IntStr(burst),5,-1,seite); Inc(i);
- write_to_page(0,i,' SHUFFLE='+IntStr(shuffle),6,-1,seite);
- write_to_page(25,i,'-s'+IntStr(shuffle),5,-1,seite); Inc(i);
- write_to_page(0,i,'Zeitschleife (für schnelle Amigas):',7,5,seite); Inc(i);
- write_to_page(0,i,' BUSDELAY='+IntStr(busdelay),6,-1,seite);
- write_to_page(25,i,'-d'+IntStr(busdelay),5,-1,seite); Inc(i);
- write_to_page(0,i,'Bildschirmfarben:',7,5,seite); Inc(i);
- s := ''; FOR j := 0 TO 7 DO s := s + hexstr(palette[j],3)+',';
- write_to_page(0,i,' PALETTE=',6,-1,seite);
- write_to_page(25,i,'-p',5,-1,seite); Inc(i);
- write_to_page(4,i,Copy(s,1,31),6,-1,seite); Inc(i);
- write_to_page(0,i,'Ausgabedatei:',7,5,seite); Inc(i);
- write_to_page(0,i,' FILE='+outputname,6,-1,seite);
- write_to_page(36,i,'-f',5,-1,seite); Inc(i);
- write_to_page(0,i,' ICONPATH='+iconpath,6,-1,seite);
- write_to_page(36,i,'-i',5,-1,seite); Inc(i);
- write_to_page(0,i,'externer Editoraufruf:',7,5,seite); Inc(i);
- write_to_page(0,i,' EDITOR='+editor,6,-1,seite);
- write_to_page(36,i,'-e',5,-1,seite); Inc(i);
- write_to_page(0,i,' CONFIGPATH='+configpath,6,-1,seite);
- write_to_page(36,i,'-c',5,-1,seite); Inc(i);
- END;
-
- PROCEDURE create_help;
- { Hilfstext erzeugen oder, falls bereits vorhanden, nur die entsprechenden }
- { Seiten anspringen. }
- VAR i,j: Integer;
- pg1,pg2: p_onepage;
- BEGIN
- pg1 := hunt_in_list($999,1,True);
- pg2 := hunt_in_list($999,2,True);
- IF (pg1=Nil) OR (pg2=Nil) THEN BEGIN
- IF pg1=Nil THEN BEGIN
- New(pg1); pg1^.pg := $999; pg1^.sp := 1; init_page(pg1);
- ins_to_list(pg1); update_list(pg2,1);
- i := 1;
- write_to_page(0,i,#13'VideoText - Kurzanleitung'#12' 1/2',3,1,pg1); Inc(i);
- Inc(i);
- write_to_page(0,i,' Einfach Seitennummern eintippen: z. B.',7,-1,pg1); Inc(i);
- write_to_page(0,i,' 100 100/1 100/* , <Return>. Korrektur',7,-1,pg1); Inc(i);
- write_to_page(0,i,' mit <Backspace> möglich. Seitenüber-',7,-1,pg1); Inc(i);
- write_to_page(0,i,' wachung bzw. -protokoll: 100/. 100/!',7,-1,pg1); Inc(i);
- char_to_page(1,i-3,#3,pg1); char_to_page(17,i-3,#7,pg1);
- char_to_page(26,i-1,#3,pg1);
- write_to_page(0,i,'Durchblättern der Listen:',4,6,pg1); Inc(i);
- write_to_page(0,i,' Tab Seitenliste/Jobliste auswählen',7,-1,pg1); Inc(i);
- write_to_page(0,i,' Crsr Auswahlzeiger > bewegen',7,-1,pg1); Inc(i);
- char_to_page(22,i-1,#7,pg1); char_to_page(24,i-1,#6,pg1);
- FOR j := i-2 TO i-1 DO char_to_page(8,j,#6,pg1);
- write_to_page(0,i,'Operationen mit Seiten/Jobs:',4,6,pg1); Inc(i);
- write_to_page(0,i,' Del eine Seite/einen Job löschen',7,-1,pg1); Inc(i);
- write_to_page(0,i,' ? Geheimschrift aufdecken',7,-1,pg1); Inc(i);
- write_to_page(0,i,' Space und wieder tarnen',7,-1,pg1); Inc(i);
- write_to_page(0,i,' s/S/^S Seite(n) speichern',7,-1,pg1); Inc(i);
- write_to_page(0,i,' l und (VT-Format) wieder laden',7,-1,pg1); Inc(i);
- write_to_page(0,i,' i IFF-Bild speichern',7,-1,pg1); Inc(i);
- write_to_page(0,i,' P Seite drucken (nur Text)',7,-1,pg1); Inc(i);
- FOR j := i-7 TO i-1 DO char_to_page(8,j,#6,pg1);
- write_to_page(0,i,'Verschiedenes:',4,6,pg1); Inc(i);
- write_to_page(0,i,' n Sendernamen anzeigen',7,-1,pg1); Inc(i);
- write_to_page(0,i,' N Dateinamen ändern',7,-1,pg1); Inc(i);
- write_to_page(0,i,' t Test/Uhr ein/aus',7,-1,pg1); Inc(i);
- write_to_page(0,i,' T Systemuhr nach VT-Zeit stellen',7,-1,pg1); Inc(i);
- write_to_page(0,i,' x Programmende',7,-1,pg1); Inc(i);
- FOR j := i-5 TO i-1 DO char_to_page(8,j,#6,pg1);
- END;
- IF pg2=Nil THEN BEGIN
- New(pg2); pg2^.pg := $999; pg2^.sp := 2; init_page(pg2);
- ins_to_list(pg2); update_list(pg2,1);
- i := 1;
- write_to_page(0,i,#13'VideoText - Kurzanleitung'#12' 2/2',3,1,pg2); Inc(i);
- Inc(i);
- write_to_page(0,i,' F-Tasten, die nichts bewirken, wurden',7,-1,pg2); Inc(i);
- write_to_page(0,i,' evtl. von einem Commodity abgefangen?',7,-1,pg2); Inc(i);
- write_to_page(0,i,'Hardwaresteuerung:',4,6,pg2); Inc(i);
- write_to_page(0,i,' f1/F1 Fernsehdarstellung aus/ein',7,-1,pg2); Inc(i);
- write_to_page(0,i,' f2 Decoder neu initialisieren',7,-1,pg2); Inc(i);
- char_to_page(8,i-2,#6,pg2);
- FOR j := i-1 TO i-1 DO char_to_page(5,j,#6,pg2);
- write_to_page(0,i,'Dateioptionen:',4,6,pg2); Inc(i);
- write_to_page(0,i,' f4 Dateiformat ASCII/VT',7,-1,pg2); Inc(i);
- write_to_page(0,i,' f5 anhängen/überschreiben',7,-1,pg2); Inc(i);
- write_to_page(0,i,' F5 Icon erzeugen?',7,-1,pg2); Inc(i);
- FOR j := i-3 TO i-1 DO char_to_page(5,j,#6,pg2);
- write_to_page(0,i,'TOP-Text:',4,6,pg2); Inc(i);
- write_to_page(0,i,' f6 Blockseiten anfordern',7,-1,pg2); Inc(i);
- write_to_page(0,i,' F6 interaktive Auswahl',7,-1,pg2); Inc(i);
- FOR j := i-2 TO i-1 DO char_to_page(5,j,#6,pg2);
- write_to_page(0,i,'Nützliches:',4,6,pg2); Inc(i);
- write_to_page(0,i,' f7 alle Jobs löschen',7,-1,pg2); Inc(i);
- write_to_page(0,i,' F7 alle Seiten löschen',7,-1,pg2); Inc(i);
- write_to_page(0,i,' f8 Vorrang für neu eingegebene Jobs?',7,-1,pg2); Inc(i);
- write_to_page(0,i,' f9/F9 1./2. Seitenauswahl editieren',7,-1,pg2); Inc(i);
- write_to_page(0,i,' f10/F10 1./2. Seitenauswahl einlesen',7,-1,pg2); Inc(i);
- write_to_page(0,i,' # Seitennummern ins Clipboard',7,-1,pg2); Inc(i);
- FOR j := i-6 TO i-4 DO char_to_page(5,j,#6,pg2);
- char_to_page(8,i-3,#6,pg2);
- char_to_page(10,i-2,#6,pg2);
- char_to_page(5,i-1,#6,pg2);
- END;
- END;
- mark_queue(False); jobcursor := False;
- mark_list(False); thispage := pg1; mark_list(True);
- writepage(thispage,True);
- END;
-
- BEGIN { Initialisierungsteil }
- END.
-